Skip to content

Added Lambda-runtime-upgrade-skill - #22

Open
higoyal01 wants to merge 1 commit into
aws-samples:mainfrom
higoyal01:main
Open

Added Lambda-runtime-upgrade-skill#22
higoyal01 wants to merge 1 commit into
aws-samples:mainfrom
higoyal01:main

Conversation

@higoyal01

Copy link
Copy Markdown
Contributor

What

Adds a portable /lambda-runtime-upgrade skill that packages the Lambda
runtime upgrade workflow so it can be used independently in any
MCP-compatible or shell-capable agent (Claude Code, Kiro, DevOps agents),
not just within this system.

Why

The lambda-runtime agent + MCP tools already exist (PR #9). This wraps that
same capability as a portable skill, matching the pattern of the existing
skills (finops-analysis, health-events-digest, tag-governance-assessment,
resilience-report).

Details

  • skills/lambda-runtime-upgrade/SKILL.md — three-path routing
    (MCP tools → AWS CLI → delegate), matching the existing skills
  • Upfront region-selection Q&A to scope work before scanning (speed)
  • Parallel multi-region scanning: Path M via
    get_deprecated_functions_multi_region, Path A via background shell jobs
  • reference/runtime-migration-kb.md — self-contained deprecation dates +
    per-family breaking changes (Python, Node.js, Java, .NET, Ruby, custom)
  • Read-only guardrails; recommends upgrades, never mutates functions
  • Reuses the existing lambda-runtime MCP tools — no new backend code
  • Registered in the README skills table

Testing

  • Skill frontmatter keys match the other skills
    (name, description, argument-hint, allowed-tools, user-invocable)
  • No new Python/backend code, so no unit-test impact

karanjhaveri pushed a commit that referenced this pull request Aug 28, 2026
…le skill (#23)

Lambda runtime upgrade reports now do their deterministic work in Python instead of asking the model to orchestrate it. A new one-shot generate_upgrade_analysis tool discovers regions, scans them in parallel for deprecated and end-of-life runtimes, downloads and statically scans code for the critical ones, and returns a rendered analysis; the agent only adds narrative and playbook on top of that.

The report template collapses from two sections to a single full_upgrade_report section, so there is no longer a second dependent section that has to re-run heavy multi-region work after the first one finishes. Reports now generate to completion in about thirty seconds.

The sweep is live rather than cached, and bounded rather than open-ended. Regions are scanned across ten workers, per-function config and code analysis across fifteen, and last-invoked enrichment is batched into a single CloudWatch GetMetricData call of up to five hundred queries per region rather than one call per function. Code download is capped at seventy-five end-of-life functions by default (raiseable to one hundred and fifty), with functions beyond the cap getting family-generic recommendations instead of per-function findings, and extraction is size-capped. Runtime deprecation dates come from a static table in the handler, since Lambda exposes no API for them. Everything stays read-only; the tool makes no mutating AWS calls.

Also adds a portable lambda-runtime-upgrade skill with a runtime-migration knowledge base, so the same guidance is usable outside the deployed agent. This supersedes #22, whose two skill files are identical to the ones added here.

IAM grows by exactly one explicit action, cloudwatch:GetMetricData, for the new enrichment. No wildcards.

Testing: 815 unit tests pass. Verified on a deployed stack: the new tool registered on the gateway with its target READY, end-to-end routing from supervisor through ops-excellence to the lambda-upgrade agent returning live data, a full report generated to completion with real content, single-function queries answering correctly, and no tool-Lambda errors.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant